home *** CD-ROM | disk | FTP | other *** search
Wrap
// CINEBENCH script, (C) MAXON Computer GmbH 2006 // set this variable to '1' if you want to run CINEBENCH in batch mode var AUTORUN = 0; var version = "V3.00"; var PLUGIN_ID = 900323; var c4d_shad_cb = 0.0; // sum for 3D Bench var ogl_soft_cb = 0.0; // sum for 3D Bench var ogl_hard_cb = 0.0; // sum for 3D Bench var render_1_cb = 0.0; // sum for RenderBench single var render_x_cb = 0.0; // sum for RenderBench MP var render_1_time = 0.0; var render_x_time = 0.0; var dialog; var autoruntime = 0; var autostarted = 0; var SHADING_FAC = 50; var R_PANELVIEW = 59000; // ************************ Renderbereich ********************** PrepareRender(name) { var d,start; LoadDocument(name); d = GetActiveDocument(); if (!d) { var text; text = stradd("Error!\n",name->GetLastString(),"\nnot found"); TextDialog(text); return FALSE; } var rd = d->GetFirstRenderData(); var bc = rd->GetContainer(); //println("...prerendering"); var xm = bc->GetData(RDATA_XRES); var ym = bc->GetData(RDATA_YRES); var shadow = bc->GetData(RDATA_SHADOW); bc->SetData(RDATA_XRES,20); bc->SetData(RDATA_YRES,10); bc->SetData(RDATA_SHADOW,0); rd->SetContainer(bc); var nap = new(BaseBitmap,20,10); d->Render(nap,FALSE); bc->SetData(RDATA_XRES,xm); bc->SetData(RDATA_YRES,ym); bc->SetData(RDATA_SHADOW,shadow); rd->SetContainer(bc); return TRUE; } DoRender(mp) { var start; var d = GetActiveDocument(); var rd = d->GetFirstRenderData(); var bc = rd->GetContainer(); bc->SetData(RDATA_SUPPRESSMP,mp); rd->SetContainer(bc); var map = new(BaseBitmap,bc->GetData(RDATA_XRES),bc->GetData(RDATA_YRES)); //println("...rendering scene"); start = time(); d->Render(map,TRUE); return start; } // *********************** 3D Bereich ********************** ClearAll(doc) { while (doc->GetFirstObject()) { doc->GetFirstObject()->Remove(); } while (doc->GetFirstMaterial()) { doc->GetFirstMaterial()->Remove(); } } MakeObject_1(doc,sub) { // first delete all existing objects ClearAll(doc); var op = new(FractalObject); doc->InsertObject(op,NULL,NULL); var bc = op->GetContainer(); bc->SetData(PRIM_FRACTAL_LEN,vector(500.0,200.0,500.0)); bc->SetData(PRIM_FRACTAL_SUBW,sub); bc->SetData(PRIM_FRACTAL_SUBH,sub); op->SetContainer(bc); var tp = new(PhongTag); /* var bc = tp->GetContainer(); bc->SetData(PHONGTAG_PHONG,1.5); tp->SetContainer(bc); */ op->InsertTag(tp,NULL); return op; } ShadeIt_1(sub,teststring) { var t,j,i,t1,t2; //var op = MakeObject_1(doc,sub); var file = GeGetStartupPath(); file->AddLast("plugins"); file->AddLast("bench"); file->AddLast("shading"); file->AddLast("city3.c4d"); LoadDocument(file); var doc = GetActiveDocument(); if (!doc) return 0.0; var fn = new(Filename); fn->SetFullString(teststring + ": CityGen"); doc->SetFilename(fn); var op = doc->GetFirstObject(); if (sub>1) { var data = new(BaseContainer,0); data->SetData(MDATA_SUBDIVIDE_HYPER,FALSE); data->SetData(MDATA_SUBDIVIDE_ANGLE,0.0); data->SetData(MDATA_SUBDIVIDE_SPLINESUB,0); data->SetData(MDATA_SUBDIVIDE_SUB,sub-1); SendModelingCommand(MCOMMAND_SUBDIVIDE,doc,op,data,MODIFY_POLYGONSELECTION); } var polys = op->GetPolygonCount(); // primitiv caches aufbauen!!! DrawViews(DA_NO_THREAD | DA_NO_REDUCTION | DA_FORCEFULLREDRAW | DA_NODUALPLANE | DA_ONLY_ACTIVE_VIEW); var t = new(BaseTime); var f1 = doc->GetMinTime()->GetFrame(doc->GetFps()); var f2 = doc->GetMaxTime()->GetFrame(doc->GetFps()); var j,i,t1 = time(); for (j=0;j<SHADING_FAC;j++) { for(i=f1; i<f2; i++) { t->SetFrame(i,doc->GetFps()); doc->SetTime(t); DrawViews(DA_NO_THREAD | DA_NO_REDUCTION | DA_FORCEFULLREDRAW | DA_NODUALPLANE | DA_ONLY_ACTIVE_VIEW); } if (time()-t1>8000) { j++; break; } } var tt = (time()-t1)/j/1000.0; var polypersec = polys*(f2-f1)/tt; var fps = (f2-f1)/tt; //println(tostring(tt,"0.2f")," sec; ",tostring(fps,".1f")," fps "); //println(tostring(polypersec,".0f")," polygons/sec"); KillDocument(doc); return tt; } ShadeIt_2(name,cycles,teststring) { var doc,f1,f2,t1,t2,t,i,j; LoadDocument(name); doc = GetActiveDocument(); var fn = new(Filename); fn->SetFullString(teststring + ": Pump Action"); doc->SetFilename(fn); // primitiv caches aufbauen!!! DrawViews(DA_NO_THREAD | DA_NO_REDUCTION | DA_FORCEFULLREDRAW | DA_NODUALPLANE | DA_ONLY_ACTIVE_VIEW); t = new(BaseTime); f1 = doc->GetMinTime()->GetFrame(doc->GetFps()); f2 = doc->GetMaxTime()->GetFrame(doc->GetFps()); t1 = time(); for (j=0;j<cycles;j++) { for(i=f1; i<f2; i++) { t->SetFrame(i,doc->GetFps()); doc->SetTime(t); DrawViews(DA_NO_THREAD | DA_NO_REDUCTION | DA_FORCEFULLREDRAW | DA_NODUALPLANE | DA_ONLY_ACTIVE_VIEW); } if (time()-t1>8000) { j++; break; } j++; for(i=f2; i>=f1; i--) { t->SetFrame(i,doc->GetFps()); doc->SetTime(t); doc->AnimateDocument(0); DrawViews(DA_NO_THREAD | DA_NO_REDUCTION | DA_FORCEFULLREDRAW | DA_NODUALPLANE | DA_ONLY_ACTIVE_VIEW); } if (time()-t1>8000) { j++; break; } } t2 = time(); var t = ((t2-t1)/j/1000.0); var fps = (f2-f1)/t; //println(tostring(t,"0.2f")," sec; ",tostring(fps,".1f")," fps"); Sleep(400); KillDocument(doc); return (t2-t1)/j/1000.0; } DoShade(teststring,type) { var x1,x2,x3,x4,x5,x6,t1,t2,t3,t4,t5,t6; var e1=0.0,e2=0.0,e3=0.0,e4=0.0; gc(); var doc=GetActiveDocument(); KillDocument(doc); SetMousePointer(MOUSE_HIDE); x1 = 1; x2 = 2; x3 = 3; //println("Scene 1"); var file = GeGetStartupPath(); file->AddLast("plugins"); file->AddLast("bench"); file->AddLast("flythrough"); file->AddLast("flythrough.c4d"); t2 = ShadeIt_2(file,SHADING_FAC,teststring); if (t2!=0.0) e2 = 12502.0/t2; //println("Scene 2"); t1 = ShadeIt_1(x1,teststring); if (t1!=0.0) e1 = 3732.4/t1; SetMousePointer(MOUSE_SHOW); var res=(e1+e2)/2.0; // correction for R9.5 if (type==0) res=res*1.04; else res=res*1.18; return res; } // ************************ make a dialog class ******************************************** enum { B_COMPLETE = 4000, B_RENDER, B_RENDER_M, B_CINEMA, B_OPENGL_SW, B_OPENGL_HW, B_CLIP1, B_CLIP2, R_RENDER, R_RENDER_M, R_CINEMA, R_OPENGL_SOFT, R_OPENGL_HARD, R_GAIN_MP, R_GAIN_OGLHW_OGLSW, R_RM1, R_RM2, B_INFO_NAME, B_INFO_MACH, B_INFO_MHZ, B_INFO_OS, B_INFO_GFX, B_ABOUT0, B_ABOUT1, B_ABOUT2, B_ABOUT3, B_ABOUT4 } class MyDialog : GeDialog { private: var start,rendermode,multi; public: MyDialog(); CreateLayout(); Command(id,msg); UpdateDialog(); Init(); CoreMessage(id,msg); Timer(msg); BringToFront(managerid); AllTestsDone(); Test1(); Test2(); Test_C4D_Shading(); Test_OGL_SW(); Test_OGL_HW(); OptEnable(); StartAllTests(); } MyDialog::MyDialog() { super(PLUGIN_ID); rendermode = -1; multi = FALSE; } MyDialog::BringToFront(managerid) { var msg = new(BaseContainer,'show'); msg->SetData('id',managerid); SendCoreMessage(0xC0FFEE,msg,0); } MyDialog::AllTestsDone() { if (!AUTORUN) return; var t; var le; le = GeGetLineEnd(); t = "CINEBENCH 9.5"+le; t += "Rendering (Single CPU) : "; if (render_1_cb!=0.0) t += tostring(render_1_cb,".0f"); else t += "---"; t += " CB-CPU"; if (render_1_time!=0.0) t += ", "+tostring(render_1_time,".1f")+" sec"; t += le; t += "Rendering (Multiple CPU) : "; if (render_x_cb!=0.0) t += tostring(render_x_cb,".0f"); else t += "---"; t += " CB-CPU"; if (render_x_time!=0.0) t += ", "+tostring(render_x_time,".1f")+" sec"; t += le; t += "Shading (CINEMA 4D) : "; if (c4d_shad_cb!=0.0) t += tostring(c4d_shad_cb,".0f"); else t += "---"; t += " CB-GFX"+le; t += "Shading (OpenGL Software Lighting) : "; if (ogl_soft_cb!=0.0) t += tostring(ogl_soft_cb,".0f"); else t += "---"; t += " CB-GFX"+le; t += "Shading (OpenGL Hardware Lighting) : "; if (ogl_hard_cb!=0.0) t += tostring(ogl_hard_cb,".0f"); else t += "---"; t += " CB-GFX"+le; t += le; SetClipboardData(t); println("AUTORUN complete\n"); Sleep(2); shutdown(); } MyDialog::CoreMessage(id,msg) { if (id==-1003 && rendermode!=100) { var diff = msg->GetData(BFM_CORE_PAR2); if (diff==-1) { println("Rendering aborted\n"); } else { if (rendermode==0) { render_1_time = diff/1000.0; if (diff!=0.0) render_1_cb = 1.0 / render_1_time * 26320.0 * 0.85; // 85% correction for R9.5 if (!(GetCPUCount()>1 && multi)) { BringToFront(PLUGIN_ID); AllTestsDone(); } //println(tostring(render_1_time,".1f")," sec"); } else if (rendermode==1) { render_x_time = diff/1000.0; if (diff!=0.0) render_x_cb = 1.0 / render_x_time * 26320.0 * 0.85; // 85% correction for R9.5 multi=FALSE; BringToFront(PLUGIN_ID); //println(tostring(render_x_time,".1f")," sec"); AllTestsDone(); } } var d = GetActiveDocument(); KillDocument(d); rendermode = -1; Init(); println(" "); } } MyDialog::CreateLayout() { SetTitle("CINEBENCH 9.5"); SetTimer(1000); if (AUTORUN) { autoruntime = time(); println("CINEBENCH AUTORUN\nPlease wait until all tests are done!\n"); } AddGroupBeginV(1000,BFH_FIT,1,"",0); AddGroupBorderSpace(4,4,4,4); AddGroupSpace(8,8); AddGroupBeginV(1000,BFH_FIT,2,"Info",0); AddGroupBorder(BORDER_GROUP_IN|BORDER_WITH_TITLE); AddGroupBorderSpace(4,4,4,4); AddGroupSpace(2,1); AddStaticText(1000,BFH_LEFT,0,0,"Machine",0); AddEditText(B_INFO_MACH,BFH_SCALEFIT,0,11); AddStaticText(1000,BFH_LEFT,0,0,"MHz (real freq.)",0); AddEditText(B_INFO_MHZ,BFH_SCALEFIT,0,11); AddStaticText(1000,BFH_LEFT,0,0,"OS",0); AddEditText(B_INFO_OS,BFH_SCALEFIT,0,11); AddStaticText(1000,BFH_LEFT,0,0,"GFX-Board",0); AddEditText(B_INFO_GFX,BFH_SCALEFIT,0,11); AddStaticText(1000,BFH_LEFT,0,0,"Tester",0); AddEditText(B_INFO_NAME,BFH_SCALEFIT,0,11); AddGroupEnd(); AddGroupBeginV(1000,BFH_FIT,1,"Main",0); AddGroupBorder(BORDER_GROUP_IN|BORDER_WITH_TITLE); AddGroupBorderSpace(4,4,4,4); AddButton(B_COMPLETE,BFH_FIT,0,0,"Start all tests"); AddButton(B_CLIP1,BFH_FIT,0,0,"-> To Clipboard"); AddButton(B_CLIP2,BFH_FIT,0,0,"-> To Database"); AddGroupEnd(); AddGroupBeginV(1000,BFH_FIT,2,"CPU Benchmark",0); AddGroupBorder(BORDER_GROUP_IN|BORDER_WITH_TITLE); AddGroupBorderSpace(4,4,4,4); AddButton(B_RENDER,BFH_FIT,0,0,"Rendering (1 CPU)"); AddStaticText(R_RENDER,BFH_LEFT,100,0,"---",0); AddButton(B_RENDER_M,BFH_FIT,0,0,"Rendering (x CPU)"); AddStaticText(R_RENDER_M,BFH_LEFT,100,0,"---",0); AddStaticText(R_RM2,BFH_LEFT,0,0,"Multiprocessor Speedup:",0); AddStaticText(R_GAIN_MP ,BFH_LEFT,60,0,"---",0); // AddButton(B_ABOUT4,BFH_LEFT,0,0,"Readme"); AddGroupEnd(); AddGroupBeginV(1000,BFH_SCALEFIT,2,"Graphics Benchmark",0); AddGroupBorder(BORDER_GROUP_IN|BORDER_WITH_TITLE); AddGroupBorderSpace(4,4,4,4); AddButton(B_CINEMA,BFH_FIT,0,0,"C4D Shading"); AddStaticText(R_CINEMA,BFH_SCALEFIT,100,0,"-o-",0); // AddStaticText(1000,BFH_LEFT,20,0,"",0); // AddStaticText(1000,BFH_LEFT,20,0,"",0); // AddButton(B_ABOUT1,BFH_LEFT,0,0,"Readme"); AddButton(B_OPENGL_SW,BFH_FIT,0,0,"OpenGL SW-L"); AddStaticText(R_OPENGL_SOFT,BFH_SCALEFIT,100,0,"---",0); AddButton(B_OPENGL_HW,BFH_FIT,0,0,"OpenGL HW-L"); AddStaticText(R_OPENGL_HARD,BFH_SCALEFIT,100,0,"---",0); AddStaticText(1000,BFH_LEFT,0,0,"OpenGL Speedup:",0); AddStaticText(R_GAIN_OGLHW_OGLSW,BFH_SCALEFIT,60,0,"---",0); AddGroupEnd(); AddGroupBeginV(1000,BFH_CENTER,1,"",0); AddGroupBorderSpace(4,4,4,4); AddStaticText(1000,BFH_CENTER,0,0,"CINEBENCH is based",0); AddStaticText(1000,BFH_CENTER,0,0,"on the high performance",0); AddStaticText(1000,BFH_CENTER,0,0,"3D software CINEMA 4D.",0); AddStaticText(1000,BFH_CENTER,0,0,"More info at www.maxon.net",0); AddGroupEnd(); AddGroupEnd(); return TRUE; } MyDialog::Test1() { var file = GeGetStartupPath(); file->AddLast("plugins"); file->AddLast("bench"); file->AddLast("daylight"); file->AddLast("daylight.c4d"); println("Single CPU Render Test"); rendermode = 100; Init(); PrepareRender(file); rendermode = 0; OptEnable(); start = DoRender(TRUE); } MyDialog::Test2() { var file = GeGetStartupPath(); file->AddLast("plugins"); file->AddLast("bench"); file->AddLast("daylight"); file->AddLast("daylight.c4d"); if (GetCPUCount()>1) { println("Multiple CPU Render Test"); rendermode = 100; Init(); PrepareRender(file); rendermode = 1; OptEnable(); start = DoRender(FALSE); } else rendermode = -1; } MyDialog::Test_C4D_Shading() { rendermode = 10; Init(); println("CINEMA 4D Shading Test"); SetOpenGL(0); c4d_shad_cb = DoShade("CINEMA 4D Shading Test",0); rendermode = -1; Init(); println(" "); } MyDialog::Test_OGL_SW() { rendermode = 10; Init(); println("OpenGL Software Lighting Test"); SetOpenGL(1); ogl_soft_cb = DoShade("OpenGL Software Lighting Test",1); rendermode = -1; Init(); println(" "); } MyDialog::Test_OGL_HW() { rendermode = 10; Init(); println("OpenGL Hardware Lighting Test"); SetOpenGL(2); ogl_hard_cb = DoShade("OpenGL Hardware Lighting Test",2); rendermode = -1; Init(); println(" "); } MyDialog::StartAllTests() { BringToFront(R_PANELVIEW); Test_OGL_HW(); Test_OGL_SW(); Test_C4D_Shading(); multi=GetCPUCount()>1; Test1(); } MyDialog::Command(id,msg) { switch (id) { case B_ABOUT0: { var file = GeGetStartupPath(); file->AddLast("bench"); file->AddLast("about0.pdf"); GeExecuteFile(file); } break; case B_ABOUT1: { var file = GeGetStartupPath(); file->AddLast("bench"); file->AddLast("about1.pdf"); GeExecuteFile(file); } break; case B_ABOUT2: { var file = GeGetStartupPath(); file->AddLast("bench"); file->AddLast("about2.pdf"); GeExecuteFile(file); } break; case B_ABOUT3: { var file = GeGetStartupPath(); file->AddLast("bench"); file->AddLast("about3.pdf"); GeExecuteFile(file); } break; case B_ABOUT4: { var file = GeGetStartupPath(); file->AddLast("bench"); file->AddLast("about4.pdf"); GeExecuteFile(file); } break; case B_RENDER: Test1(); break; case B_RENDER_M: Test2(); break; case B_CINEMA: BringToFront(R_PANELVIEW); Test_C4D_Shading(); BringToFront(PLUGIN_ID); break; case B_OPENGL_SW: BringToFront(R_PANELVIEW); Test_OGL_SW(); BringToFront(PLUGIN_ID); break; case B_OPENGL_HW: BringToFront(R_PANELVIEW); Test_OGL_HW(); BringToFront(PLUGIN_ID); break; case B_COMPLETE: StartAllTests(); break; case B_CLIP1: case B_CLIP2: { var t; var le; le = GeGetLineEnd(); t = "CINEBENCH 9.5"+le; t += "****************************************************"+le+le; t += "Tester : " + GetString(B_INFO_NAME)+le+le; t += "Processor : " + GetString(B_INFO_MACH)+le; t += "MHz : " + GetString(B_INFO_MHZ)+le; t += "Number of CPUs : " + tostring(GetCPUCount()) +le; t += "Operating System : " + GetString(B_INFO_OS)+le; t += le; t += "Graphics Card : " + GetString(B_INFO_GFX)+le; t += "Resolution : <fill this out>"+le; t += "Color Depth : <fill this out>"+le+le; t += "****************************************************"+le+le; t += "Rendering (Single CPU): "; if (render_1_cb !=0.0) t += tostring( render_1_cb,".0f"); else t += "---"; t += " CB-CPU "+le; t += "Rendering (Multiple CPU): "; if (render_x_cb!=0.0) t += tostring(render_x_cb,".0f"); else t += "---"; t += " CB-CPU "+le; t += le; if (render_1_cb!=0.0 && render_x_cb!=0.0) t += "Multiprocessor Speedup: "+tostring(render_x_cb/render_1_cb,".2f")+le; t += le; t += "Shading (CINEMA 4D) : "; if (c4d_shad_cb!=0.0) t += tostring(c4d_shad_cb,".0f"); else t += "---"; t += " CB-GFX "+le; t += "Shading (OpenGL Software Lighting) : "; if (ogl_soft_cb!=0.0) t += tostring(ogl_soft_cb,".0f"); else t += "---"; t += " CB-GFX "+le; t += "Shading (OpenGL Hardware Lighting) : "; if (ogl_hard_cb!=0.0) t += tostring(ogl_hard_cb,".0f"); else t += "---"; t += " CB-GFX "+le; t += le; var a,b,s; a = c4d_shad_cb; b = ogl_soft_cb; if (ogl_hard_cb>b) b=ogl_hard_cb; if (a!=0.0 && b!=0.0) { t += "OpenGL Speedup: " + tostring(b/a,".2f")+le; } t += le + "****************************************************"+le; if (id == B_CLIP2) { // send data to CINEBENCH database plugin var b = new(BaseContainer,0); b->SetData(0,t); SendPluginMessage(b,200000020); } else { SetClipboardData(t); } } break; } } var splashbitmap = 0; MyDialog::Timer(msg) { if (!splashbitmap) { splashbitmap = TRUE; } if (multi && rendermode==-1) { multi=FALSE; Test2(); } if (AUTORUN && !autostarted) { if (time()>autoruntime+3000) { autostarted = TRUE; StartAllTests(); } return; } } MyDialog::OptEnable() { Enable(B_RENDER_M,!AUTORUN && GetCPUCount()>1 && rendermode==-1); Enable(R_RENDER_M,!AUTORUN && GetCPUCount()>1); Enable(R_RM1 ,!AUTORUN && GetCPUCount()>1); Enable(R_RM2 ,!AUTORUN && GetCPUCount()>1); Enable(R_GAIN_MP ,!AUTORUN && GetCPUCount()>1); Enable(B_RENDER,!AUTORUN && rendermode==-1); Enable(B_CINEMA,!AUTORUN && rendermode==-1); Enable(B_OPENGL_SW,!AUTORUN && rendermode==-1); Enable(B_OPENGL_HW,!AUTORUN && rendermode==-1); Enable(B_CLIP1,!AUTORUN && rendermode==-1); Enable(B_CLIP2,!AUTORUN && rendermode==-1); Enable(B_COMPLETE,!AUTORUN && rendermode==-1); } var showsplash; MyDialog::Init() { if (!showsplash) { var file = GeGetStartupPath(); file->AddLast("plugins"); file->AddLast("bench"); file->AddLast("cb.jpg"); ShowBitmap(file); showsplash = TRUE; } OptEnable(); if (render_1_cb!=0.0) { var txt = stradd(tostring(render_1_cb,".0f")," CB-CPU"); SetString(R_RENDER,txt); } else SetString(R_RENDER,"---"); if (render_x_cb!=0.0) { var txt = stradd(tostring(render_x_cb,".0f")," CB-CPU"); SetString(R_RENDER_M,txt); } else SetString(R_RENDER_M,"---"); if (c4d_shad_cb!=0.0) { var txt = stradd(tostring(c4d_shad_cb,".0f")," CB-GFX"); SetString(R_CINEMA,txt); } else SetString(R_CINEMA,"---"); if (ogl_soft_cb!=0.0) { var txt = stradd(tostring(ogl_soft_cb,".0f")," CB-GFX"); SetString(R_OPENGL_SOFT,txt); } else SetString(R_OPENGL_SOFT,"---"); if (ogl_hard_cb!=0.0) { var txt = stradd(tostring(ogl_hard_cb,".0f")," CB-GFX"); SetString(R_OPENGL_HARD,txt); } else SetString(R_OPENGL_HARD,"---"); if (render_x_cb!=0.0 && render_1_cb!=0.0) { var txt = stradd(tostring(render_x_cb/render_1_cb,".2f")," x"); SetString(R_GAIN_MP,txt); } else SetString(R_GAIN_MP,"---"); var mmax=ogl_hard_cb; if (ogl_soft_cb>ogl_hard_cb) mmax=ogl_soft_cb; SetString(R_GAIN_OGLHW_OGLSW,(c4d_shad_cb!=0.0 && mmax!=0.0) ? stradd(tostring(mmax/c4d_shad_cb,".2f")," x") : "---"); } // ************************************************************************ class MyMenuPlugin : MenuPlugin { public: MyMenuPlugin(); GetID(); GetName(); GetHelp(); Execute(doc); RestoreLayout(secret); } MyMenuPlugin::MyMenuPlugin() { super(); } MyMenuPlugin::GetID() { return PLUGIN_ID; } MyMenuPlugin::GetName() { return "CINEBENCH"; } MyMenuPlugin::GetHelp() { return "CINEBENCH"; } MyMenuPlugin::Execute(doc) { if (!dialog) dialog = new(MyDialog); dialog->Open(TRUE,-1,-1); } MyMenuPlugin::RestoreLayout(secret) { if (!dialog) dialog = new(MyDialog); dialog->RestoreLayout(secret); } // ************************************************************************ main() { c4d_shad_cb = 0.0; ogl_soft_cb = 0.0; ogl_hard_cb = 0.0; render_1_cb = 0.0; render_x_cb = 0.0; Register(MyMenuPlugin); }